package com.faya.green.dao.authority;

import com.faya.green.model.Post;
import com.faya.green.model.PostUser;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 用户 ：LX
 * 创建时间： 2018/8/19. 22:28
 * 地点：广州
 * 目的: 岗位与用户关系
 * 结果：
 */
public interface PostUserDao {

    /**
     * 新增 岗位与用户关系
     * @param postUser 岗位与用户关系
     */
    void addPostUser(PostUser postUser);

    /**
     * 更新 岗位与用户关系
     * @param postUser 岗位与用户关系
     */
    void updatePostUser(PostUser postUser);

    /**
     * 获取 岗位与用户关系
     * @param userId 用户id
     * @param postId 岗位id
     * @return
     */
    @Select("select * from PostUser where userId = #{userId,jdbcType=VARCHAR} and postId = #{postId,jdbcType=VARCHAR} and status!='2' ")
    PostUser getUserIdPostId(@Param("userId") String userId, @Param("postId") String postId);

    /**
     * 根据主键删除 岗位与用户关系
     * @param id 岗位与用户关系主键
     */
    @Delete("delete from PostUser where id = #{id, jdbcType=VARCHAR}")
    void deletePostUser(String id);

    /**
     * 获得这个岗位下全部的用户关系
     * @param postId 岗位
     * @return
     */
    @Select("select * from PostUser where status != '2' and postId = #{postId, jdbcType=VARCHAR}")
    List<PostUser> getPostUserByPostId(String postId);

    /**
     * 获得这个用户对应的岗位关系
     * @param userId 用户ID
     * @return
     */
    @Select("select * from PostUser where status != '2' and userId = #{userId, jdbcType=VARCHAR}")
    List<PostUser> getPostUserByUserId(String userId);

    /**
     * 根据用户id查询到岗位
     * @param userId 用户id
     * @return
     */
    @Select("select * from post p where p.id in (select pu.postId from PostUser pu where pu.status != '2' and pu.userId = #{userId, jdbcType=VARCHAR})")
    List<Post> getPostByUserId (String userId);
}
